语音识别DeepASR 您所在的位置:网站首页 kaldi android 语音识别DeepASR

语音识别DeepASR

2023-05-27 03:33| 来源: 网络整理| 查看: 265

``` #### 解码器的安装 进入解码器源码所在的目录 ```shell cd models/fluid/DeepASR/decoder ``` 运行安装脚本 ```shell sh setup.sh ``` 编译过程完成即成功地安转了解码器。 ### 数据预处理 参考[Kaldi的数据准备流程](http://kaldi-asr.org/doc/data_prep.html)完成音频数据的特征提取和标签对齐 ### 声学模型的训练 可以选择在CPU或GPU模式下进行声学模型的训练,例如在GPU模式下的训练 ```shell CUDA_VISIBLE_DEVICES=0,1,2,3 python -u train.py \ --train_feature_lst train_feature.lst \ --train_label_lst train_label.lst \ --val_feature_lst val_feature.lst \ --val_label_lst val_label.lst \ --mean_var global_mean_var \ --parallel ``` 其中`train_feature.lst`和`train_label.lst`分别是训练数据集的特征列表文件和标注列表文件,类似的,`val_feature.lst`和`val_label.lst`对应的则是验证集的列表文件。实际训练过程中要正确指定建模单元大小、学习率等重要参数。关于这些参数的说明,请运行 ```shell python train.py --help ``` 获取更多信息。 ### 训练过程中的时间分析 利用Fluid提供的性能分析工具profiler,可对训练过程进行性能分析,获取网络中operator级别的执行时间 ```shell CUDA_VISIBLE_DEVICES=0 python -u tools/profile.py \ --train_feature_lst train_feature.lst \ --train_label_lst train_label.lst \ --val_feature_lst val_feature.lst \ --val_label_lst val_label.lst \ --mean_var global_mean_var ``` ### 预测和解码 在充分训练好声学模型之后,利用训练过程中保存下来的模型checkpoint,可对输入的音频数据进行解码输出,得到声音到文字的识别结果 ``` CUDA_VISIBLE_DEVICES=0,1,2,3 python -u infer_by_ckpt.py \ --batch_size 96 \ --checkpoint deep_asr.pass_1.checkpoint \ --infer_feature_lst test_feature.lst \ --infer_label_lst test_label.lst \ --mean_var global_mean_var \ --parallel ``` ### 评估错误率 对语音识别系统的评价常用的指标有词错误率(Word Error Rate, WER)和字错误率(Character Error Rate, CER), 在DeepASR中也实现了相关的度量工具,其运行方式为 ``` python score_error_rate.py --error_rate_type cer --ref ref.txt --hyp decoding.txt ``` 参数`error_rate_type`表示测量错误率的类型,即 WER 或 CER;`ref.txt` 和 `decoding.txt` 分别表示参考文本和实际解码出的文本,它们有着同样的格式: ``` key1 text1 key2 text2 key3 text3 ... ``` ### Aishell 实例 本节以[Aishell数据集](http://www.aishelltech.com/kysjcp)为例,展示如何完成从数据预处理到解码输出。Aishell是由北京希尔贝克公司所开放的中文普通话语音数据集,时长178小时,包含了400名来自不同口音区域录制者的语音,原始数据可由[openslr](http://www.openslr.org/33)获取。为简化流程,这里提供了已完成预处理的数据集供下载: ``` cd examples/aishell sh prepare_data.sh ``` 其中包括了声学模型的训练数据以及解码过程中所用到的辅助文件等。下载数据完成后,在开始训练之前可对训练过程进行分析 ``` sh profile.sh ``` 执行训练 ``` sh train.sh ``` 默认是用4卡GPU进行训练,在实际过程中可根据可用GPU的数目和显存大小对`batch_size`、学习率等参数进行动态调整。训练过程中典型的损失函数和精度的变化趋势如图2所示

图2 在Aishell数据集上训练声学模型的学习曲线

完成模型训练后,即可执行预测识别测试集语音中的文字: ``` sh infer_by_ckpt.sh ``` 其中包括了声学模型的预测和解码器的解码输出两个重要的过程。以下是解码输出的样例: ``` ... BAC009S0764W0239 十一 五 期间 我 国 累计 境外 投资 七千亿 美元 BAC009S0765W0140 在 了解 送 方 的 资产 情况 与 需求 之后 BAC009S0915W0291 这 对 苹果 来说 不 是 件 容易 的 事 儿 BAC009S0769W0159 今年 土地 收入 预计 近 四万亿 元 BAC009S0907W0451 由 浦东 商店 作为 掩护 BAC009S0768W0128 土地 交易 可能 随着 供应 淡季 的 到来 而 降温 ... ``` 每行对应一个输出,均以音频样本的关键字开头,随后是按词分隔的解码出的中文文本。解码完成后运行脚本评估字错误率(CER) ``` sh score_cer.sh ``` 其输出类似于如下所示 ``` Error rate[cer] = 0.101971 (10683/104765), total 7176 sentences in hyp, 0 not presented in ref. ``` 利用经过20轮左右训练的声学模型,可以在Aishell的测试集上得到CER约10%的识别结果。 ### 欢迎贡献更多的实例 DeepASR目前只开放了Aishell实例,我们欢迎用户在更多的数据集上测试完整的训练流程并贡献到这个项目中。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有